package com.spoorle.perf.iface;
/**
 * <p>Statistics represents the smallest measurable unit in application.</p>
 * <p>It stores performance metrics (execution time in miliseconds) such as:
 * <ul><li>minimum execution time</li><li>maximum execution time</li><li>average execution time</li><li>number of executions</li>
 * </ul></p>
 * <p>Performance metrics are grouped by class and operation in given class, thus providing
 * independet naming scheme for operations.</p>
 * @author Maciej Grula <a href="mailto:maciej.grula@gmail.com">maciej.grula@gmail.com</a>
 *
 */
public interface Statistics {
	/**
	 * name of the operation
	 * @return
	 */
	public abstract String getOperation();
	/**
	 * operation's class
	 * @return
	 */
	public abstract Class getClazz();
	/**
	 * minimum value in miliseconds
	 * @return miliseconds
	 */
	public abstract float getMinVal();
	/**
	 * maximum value in miliseconds
	 * @return miliseconds
	 */
	public abstract float getMaxVal();
	/**
	 * average value in miliseconds
	 * @return miliseconds
	 */
	public abstract float getAvgVal();
	/**
	 * number of executions
	 * @return
	 */
	public abstract long getCount();
}
